J.L = {
    canvas: {},
    wb: {},
    FK: {},
    Xg: {}
};
J.L.he = J.P.extend({
    pb: [J.ga, J.Nc],
    o: function(a, b) {
        this.I = a;
        this.cg = a.$b.cg;
        this.no = b;
        this.l = b.l;
        this.D("display", b)
    },
    vp: function(a, b) {
        var c = this.zoom;
        if (Math.floor(c) === c) {
            var c = [],
                d = this.I,
                f = [a.x, a.y];
            if (d.Bk) {
                for (var g = d.jj,
                         h = !0,
                         k = [], l = 0; l < g.length; l += 1) {
                    var m = g[l].Og;
                    if (m) {
                        var n = m.clientWidth,
                            q = m.clientHeight;
                        m.childNodes[0] && (n = n || m.childNodes[0].clientWidth, q = q || m.childNodes[0].clientHeight);
                        window.opera && (n = Math.max(n, m.childNodes[0].scrollWidth), q = Math.max(q, m.childNodes[0].scrollHeight));
                        0 === n || 0 === q ? (h = !1, k.push(g[l])) : (d.Af = Math.max(d.Af, Math.abs(g[l].get("offset").x) + n), d.Bf = Math.max(d.Bf, Math.abs(g[l].get("offset").y) + q), g[l].width = n, g[l].height = q)
                    }
                }
                h ? (d.Bk = !1, d.jj = []) : d.jj = k
            }
            g = Math.max(d.Af, d.ij || 0) * this.N;
            h = Math.max(d.Bf, d.ij || 0) * this.N;
            h = Math.max(h, d.gg || 0);
            g = Math.max(g, d.gg || 0);
            if (g = d.Ue([f[0] - g, f[1] - h, f[0] + g, f[1] + h])) {
                for (var r in g) if (g.hasOwnProperty(r) && (h = g[r], h.get("visible") && !h.get("noSelect"))) if (l = h.ta, l instanceof J.R.fd) if (this.cg) {
                    var k = this.I.Zm,
                        n = k.size.width * this.N,
                        q = k.size.height * this.N,
                        s = k.anchor.x * this.N,
                        t = k.anchor.y * this.N,
                        n = J.g.gu([[f[0] - n + s, f[1] - q + t], [f[0] + s, f[1] + t]]);
                    J.g.Hd(n, l.Pa) && c.push(h)
                } else if ("undefined" !== typeof l.get("radius")) k = l.Pa,
                    k = new J.C(k[0], k[1]),
                (new J.C(f[0], f[1])).Tc(k) * Math.cos(h.get("center").w * Math.PI / 180) <= l.get("radius") && c.push(h);
                else {
                    if (k = h.get("params"), k.visible) {
                        l = l.Pa;
                        s = k.bu % 360;
                        m = [f[0], f[1]];
                        if (s) {
                            var n = (f[0] - l[0]) / this.N,
                                q = (f[1] - l[1]) / this.N,
                                t = Math.PI * s / 180,
                                s = Math.cos( - t),
                                t = Math.sin( - t),
                                u = n * t + q * s;
                            m[0] = l[0] + (n * s - q * t) * this.N;
                            m[1] = l[1] + u * this.N
                        }
                        n = h.width * this.N;
                        q = h.height * this.N;
                        s = k.offset.x * this.N;
                        t = k.offset.y * this.N;
                        n = J.g.gu([[m[0] - n - s, m[1] - q - t], [m[0] - s, m[1] - t]]);
                        l[0] instanceof Array || (l = [l]);
                        for (q = l.length - 1; 0 <= q; q -= 1) if (J.g.Hd(n, l[q])) {
                            k.shape ? this.BE(h, m, l) && c.push(h) : c.push(h);
                            break
                        }
                    }
                } else l.Hd ? l.Hd(f) && c.push(h) : l.om && 1.8 * l.om(f) <= h.get("strokeWeight") * this.N && c.push(h);
                this.cg || c.sort(function(a, b) {
                    return a.get("isTop") ? -1 : b.get("isTop") ? 1 : a.get("zIndex") > b.get("zIndex") || a.get("zIndex") === b.get("zIndex") && a.sm > b.sm ? -1 : 1
                });
                b(c, d)
            } else b([], d)
        }
    },
    BE: function(a, b, c) {
        var d = (b[0] - c[0][0]) / this.N;
        b = (b[1] - c[0][1]) / this.N;
        a = a.get("params");
        c = a.offset;
        var d = [d - c.x, b - c.y],
            f;
        a = a.shape;
        if ("circle" === a.j.type) {
            if (b = a.j.coords[0], c = a.j.coords[1], Math.sqrt((d[0] - b) * (d[0] - b) + (d[1] - c) * (d[1] - c)) <= a.j.coords[2]) return ! 0
        } else {
            if ("poly" === a.j.type) return f = a.j.coords,
                f = this.AC(f),
                J.ug.Hd(d, f);
            if ("rect" === a.j.type) return f = a.j.coords,
                a = f[0],
                b = f[1],
                c = f[2],
                f = f[3],
                f = [[a, b], [c, b], [c, f], [a, f]],
                J.ug.Hd(d, f)
        }
        return ! 1
    },
    AC: function(a) {
        for (var b = [], c = 0; c / 2 < a.length / 2; c += 2) b.push([a[c], a[c + 1]]);
        return b
    },
    xp: function(a, b, c, d, f, g, h) {
        var k = ["position:absolute;"];
        k.push("top:" + Math.round(c) + "px;");
        k.push("left:" + Math.round(b) + "px;");
        k.push("width:" + Math.round(d) + "px;");
        k.push("height:" + Math.round(f) + "px;");
        1 > g && ("opacity" in a.style ? (k.push("opacity"), k.push(":"), k.push(g), k.push(";")) : 8 <= document.documentMode ? (k.push("-ms-filter:\'progid:DXImageTransform.Microsoft.Alpha(opacity="), k.push(Math.ceil(100 * g)), k.push(")\';")) : (k.push("filter:alpha(opacity="), k.push(Math.ceil(100 * g)), k.push(");")));
        k.push("z-index:" + h + ";");
        k.join("") !== a.style.cssText && (a.style.cssText = k.join(""))
    }
});
J.L.Oc = J.P.extend({
    pb: [J.ga, J.Nc],
    o: function(a) {
        this.l = a;
        this.Mi = {};
        this.Hi = a.Hi;
        this.u = a.ua.G;
        this.D("display", a);
        this.D("rotateEnable", a)
    },
    vp: function(a, b, c, d) {
        function f(a, d) {
            a.length && (h[J.e.indexOf(b, d)] = a);
            k -= 1;
            0 >= k && (c(h), k = 0)
        }
        for (var g = b.length,
                 h = [], k = 0, l, m = [], n = 0; n < g; n += 1) l = b[n],
        l instanceof J.G.nc && l.get("visible") && (m.push(this.xk(l)), k += 1);
        for (g = 0; g < m.length; g += 1) m[g].vp(a, f, d)
    }
});
J.L.If = J.L.he.extend({
    o: function(a, b) {
        arguments.callee.Ja.apply(this, arguments);
        this.D("reload", a, !0);
        this.va = new J.ly({
            size: J.f.size,
            px: 0.7,
            Wu: 2,
            ox: 300
        });
        var c = this;
        this.va.c("drop",
            function(a) {
                c.nz(a.il)
            });
        this.Jb = 1;
        this.ez = 50;
        this.es = !0;
        this.I.va = this.va;
        this.Rp = new J.xr(6, null, a.Tu);
        new J.xr(5, null, a.Tu)
    },
    reloadChanged: function() {
        this.Tb = !1;
        this.va.clear();
        this.reload = !0;
        this.set("display")
    },
    Nv: function(a, b) {
        if (!a.fj || a.fj.Vf) {
            var c = this;
            a.loaded = !1;
            a.fj = b.Mv(a.url,
                function(b) {
                    a.fj = null;
                    a.loaded = !0;
                    c.va.set(a.key, a);
                    b && (a.ya = b, a.fj = null, c.set("display", 0), c.hj += 1, c.Tb || c.hj !== c.Am || (c.I.Z("complete"), c.Tb = !0))
                },
                !1)
        }
    },
    Nx: function(a, b, c, d) {
        var f = [];
        c = c || 18;
        b = Math.pow(2, b - c);
        for (var g = 0; g < a.length; g += 1) {
            var h = a[g].ma,
                k = Math.floor(h.x / b),
                h = Math.floor(h.y / b);
            d ? (k = c + "/" + k + "/" + h, h = this.va.get(k)) : (h = new J.Ce(c, k, h), k = h + "", h = new J.De(h)); ! f[k] && h && (f.push(h), f[k] = 1)
        }
        return f
    },
    Ov: function(a) {
        for (var b = a.length - 1; 0 <= b; b -= 1) {
            var c = a[b];
            if (c.length) if (this.sc) {
                var d = c[0].ma.z;
                18 < d && (c = this.Nx(c, d));
                this.rx(c, !0);
                for (var f = 0,
                         g = 0; f < a.length;) this.SE(c.slice(30 * g, 30), d),
                    f += 30,
                    g += 1
            } else for (this.rx(c), this.Am += c.length, d = c.length - 1; 0 <= d; d -= 1) this.Nv(c[d], this.Rp)
        }
    },
    Ep: function(a, b) {
        var c = a + "";
        return (b ? this.va.mj(c) : this.va.get(c)) || new J.De(a.gb(), this.te(a.x, a.y, a.z))
    },
    Zk: function(a, b) {
        return this.ib * Math.pow(2, a - b)
    },
    nz: function(a) {
        a.fj && this.Rp.yC(a.fj);
        a.Eq = !1;
        a.loaded = !1
    },
    dp: function(a, b, c) {
        var d = this.qb,
            f = a.N;
        a = b.Bb.x;
        var g = b.Bb.y,
            h = b.Za.x;
        b = b.Za.y;
        this.bn = new J.C(0, 0);
        d = this.Zk(this.zoom, d) * f;
        d /= Math.pow(2, this.Td);
        c && (h = Math.max(c[0], h) - c[0], b = Math.max(c[1], b) - c[1], a = Math.min(c[2], a) - c[0], g = Math.min(c[3], g) - c[1], this.bn = new J.C(Math.floor(c[0] / d), Math.floor(c[1] / d)));
        a /= d;
        g /= d;
        c = {
            Cd: 0 === a % 1 ? a - 1 : Math.floor(a),
            Zc: 0 === g % 1 ? g - 1 : Math.floor(g),
            Nd: Math.floor(h / d),
            Lc: Math.floor(b / d)
        };
        c.Tk = c.Cd - c.Nd + 1;
        c.Km = c.Zc - c.Lc + 1;
        return c
    },
    rx: function(a, b) {
        if (a.length) {
            var c = this.Oa.tb(this.ib * Math.pow(2, this.qb - a[0].ma.z) * this.ab),
                d = Math.floor(c.x),
                f = Math.floor(c.y);
            a.sort(function(a, c) {
                var k = a.ma,
                    l = c.ma,
                    m = k.x - d,
                    k = k.y - f,
                    n = l.x - d,
                    l = l.y - f;
                return (b ? -1 : 1) * (n * n + l * l - (m * m + k * k))
            })
        }
    },
    clear: function() {
        this.Rp.clear()
    },
    xq: function(a, b) {
        b.te !== this.te && (this.te = b.te, this.va.clear());
        this.clear();
        this.mf = b.mf;
        this.lf = b.lf;
        this.ib = b.ib;
        var c = a.sa;
        this.yc = b.yc || a.sa.yc;
        this.Kg = c.Kg;
        this.size = a.size;
        this.rotation = c.rotation;
        this.Oa = c.Oa;
        this.ab = c.ab;
        this.Td = (this.Pl = J.f.aa && b.la && !b.IE) ? 1 : 0;
        this.zoom = c.zoom;
        this.Fc = this.qb = c.qb;
        this.Fc += this.Td;
        this.N = c.N;
        a.scale = Math.pow(2, this.zoom - this.qb);
        var d = a.Ha,
            c = this.xc = this.dp(c, d, b.g),
            f = [],
            g = [],
            h,
            k = [],
            l = [],
            m = [],
            n = new J.Ce(0, 0, 0),
            q,
            r = this.zoom,
            l = this.Mf || "",
            s = {},
            t = {},
            u,
            v,
            x,
            w,
            A,
            z;
        this.Bc = 1E6 * Math.random() << 0;
        for (q = l.length - 1; 0 <= q; q -= 1) if (h = l[q], !(h.Ij < b.opacity)) if (n.z = h.ma.z, n.x = h.ma.x, n.y = h.ma.y, n.z === this.Fc) s[n + ""] |= 16;
        else if (n.z < this.Fc) {
            if (s[n + ""] |= 64, this.mf) for (z = this.Fc - n.z, u = Math.max(c.Nd, n.x << z), r = Math.min(c.Cd, (n.x + 1 << z) - 1), v = Math.max(c.Lc, n.y << z), x = Math.min(c.Zc, (n.y + 1 << z) - 1), n.z = this.Fc, w = u; w <= r; w += 1) for (n.x = w, A = v; A <= x; A += 1) n.y = A,
                z = n + "",
                s[z] |= 32,
                t[z] = t[z] ? Math.max(h.ma.z, t[z]) : h.ma.z
        } else if (this.lf) for (z = 1; n.z >= this.Fc;) {
            s[n + ""] |= z;
            u = n.x >> 1;
            v = n.y >> 1;
            r = u << 1;
            x = v << 1;
            h = 0;
            for (w = 2; 0 < w; w -= 1) for (n.x = r + w, A = 2; 0 < A; A -= 1) n.y = x + A,
            s[n + ""] & 5 && (h += 1);
            n.z -= 1;
            n.x = u;
            n.y = v;
            z = 4 === h ? 4 : 2
        }
        l = [];
        n.z = this.Fc;
        for (w = c.Nd; w <= c.Cd; w += 1) for (n.x = w, A = c.Lc; A <= c.Zc; A += 1) {
            n.y = A;
            h = this.Ep(n);
            z = n + "";
            u = !1;
            if (h.ya) if (a.ac && this.sc && !h.Ig) u = !0;
            else if (h.Bc = this.Bc, l.push(h), z = s[z], z & 36) {
                if (h.Jb !== this.Jb || 1 > h.Ij) u = !0
            } else h.Xj = !0;
            else u = !0,
            !h.status && n.z <= b.Qb[1] + this.Td && k.push(h);
            u && m.push(h)
        }
        l.wc = this.qb;
        l.length && (f.push(l), f["lv" + this.qb] = l);
        g.push(k);
        g["lv" + this.qb] = k;
        if (this.lf) {
            m = m.slice(0);
            k = [];
            for (q = m.length - 1; 0 <= q; q -= 1) h = m[q],
            s[h.key] & 4 || k.push(h);
            h = b.Qb[1] + this.Td;
            for (r = this.Fc + 1; m.length && r <= h; r += 1) {
                l = [];
                x = m;
                m = [];
                n.z = r;
                for (q = x.length - 1; 0 <= q; q -= 1) if (w = x[q], z = s[w.key], z & 7) for (u = w.ma.x << 1, v = w.ma.y << 1, w = 2; 0 < w; w -= 1) for (n.x = u + w, A = 2; 0 < A; A -= 1) {
                    n.y = v + A;
                    z = n + "";
                    var F = this.va.mj(z);
                    s[z] & 5 && F && F.ya ? (F.Xj = !0, F.Bc = this.Bc, l.push(F)) : m.push(new J.De(n.gb(), ""))
                }
                l.length && (l.wc = r - this.Td, f.push(l), f["lv" + (r - this.Td)] = l, this.sc && this.Nw(l, f, this.Fc - r))
            }
            m = k
        }
        if (this.mf) for (w = Math.max(b.Qb[0], this.Fc - 2), A = Math.max(w, this.Fc - this.YH), r = this.Fc - 1; m.length && r >= w; r -= 1) {
            v = r >= A;
            k = [];
            l = [];
            F = {};
            x = m;
            m = [];
            for (q = x.length - 1; 0 <= q; q -= 1) h = x[q],
                n.z = r,
                n.x = h.ma.x >> 1,
                n.y = h.ma.y >> 1,
                h = this.Ep(n, !v),
            F[h.key] || (F[h.key] = 1, u = !1, h.ya && (!this.bI || s[h.key] & 64) ? (n.x = Math.min(c.Cd, Math.max(c.Nd, n.x << this.Fc - r)), n.y = Math.min(c.Zc, Math.max(c.Lc, n.y << this.Fc - r)), n.z = this.Fc, z = n + "", "number" === typeof t[z] && h.ma.z > t[z] ? u = !0 : h.Xj = !0, h.Bc = this.Bc, l.push(h)) : (u = !0, v && !h.status && k.push(h)), u && m.push(h));
            l.length && (f.push(l), l.wc = r - this.Td, f["lv" + (r - this.Td)] = l, this.sc && this.Nw(l, f, this.Fc - r));
            v && k.length && (g.push(k), g["lv" + (r - this.Td)] = k)
        }
        this.hj = this.Am = 0;
        this.sc && !a.Uv || this.Ov(g, d);
        this.Yq = f;
        this.I.set("tiles", f)
    },
    Nw: function(a, b, c) {
        for (var d = 0; d < a.length; d += 1) for (var f = a[d].ma, g = f.z + c, h = Math.pow(2, c), k = f.x * h, f = f.y * h, l = 0; l < h; l += 1) for (var m = 0; m < h; m += 1) {
            var n = this.va.get(g + "/" + (k + l) + "/" + (f + m));
            if (n && b["lv" + (g - this.Td)]) {
                var q = b["lv" + (g - this.Td)].indexOf(n); - 1 !== q && n.ya && !n.Ig && b["lv" + (g - this.Td)].splice(q, 1)
            }
        }
    },
    TJ: function() {
        var a = this.xc.Cd + 1,
            b = this.xc.Zc + 1,
            c = this.xc.Cd - 1,
            d = this.xc.Zc - 1,
            f = new J.Ce(0, 0, 0);
        f.z = this.Fc;
        for (var g = [], h = c; h <= a; h += 1) {
            f.x = h;
            for (var k = d; k <= b; k += 1) f.y = k,
            this.va.mj(void 0) || (c = new J.De(f.gb(), this.te(f.x, f.y, f.z)), g.push(c))
        }
        this.Ov([g])
    }
});
J.L.wb.If = J.L.If.extend({
    o: function(a, b) {
        arguments.callee.Ja.apply(this, arguments);
        this.Ad()
    },
    Ad: function() {
        this.ka = document.createElement("div")
    },
    re: function() {
        return this.ka
    },
    mi: function() {
        if (this.Mf) for (var a = 0; a < this.Mf.length; a += 1) {
            var b = this.Mf[a];
            if (b.ya && this.Bc !== b.Bc && this.ka === b.ya.parentNode) {
                if (J.f.Xc && b.ya.vml) for (var c in b.ya.vml) b.ya.vml.hasOwnProperty(c) && this.ka === b.ya.vml[c].shape.parentNode && this.ka.removeChild(b.ya.vml[c].shape);
                this.ka.removeChild(b.ya)
            } else {
                var d = b.ma,
                    f = d.x / Math.pow(2, d.z - this.qb),
                    d = d.y / Math.pow(2, d.z - this.qb);
                if ((Math.ceil(f) < this.xc.Nd || Math.floor(f) > this.xc.Cd || Math.ceil(d) < this.xc.Lc || Math.floor(d) > this.xc.Zc) && b.ya && this.ka === b.ya.parentNode) {
                    if (J.f.Xc && b.ya.vml) for (var g in b.ya.vml) b.ya.vml.hasOwnProperty(g) && this.ka === b.ya.vml[g].shape.parentNode && this.ka.removeChild(b.ya.vml[g].shape);
                    this.ka.removeChild(b.ya);
                    b.zoom = null
                }
            }
        }
    },
    Mc: function(a, b) {
        if (a.en || a.Zq) this.tc(a, b, !0);
        else {
            this.xq(a, b);
            var c = !1;
            if (!this.U || 3E4 < Math.abs(this.Oa.x - this.U.x) / this.N || 3E4 < Math.abs(this.Oa.y - this.U.y) / this.N) c = !0;
            if (c || this.zoom << 0 !== this.zoom || this.bd !== this.zoom) this.U = this.Oa,
                this.bd = this.zoom;
            var c = !1,
                d = +new Date,
                f = b.opacity;
            "opacity" in this.ka.style && (f = 1);
            this.jf = b.cm;
            var g = [],
                h = this.Jb;
            this.Jb += 1;
            var k = this.Yq;
            this.mi();
            if (J.f.Xc && "overlayer" === this.I.get("type") && this.ka && a.gf) this.ka.innerHTML = "",
                this.Mf = [];
            else {
                for (var l, m, n = k.length - 1; 0 <= n; n -= 1) {
                    var q = k[n];
                    l = q.wc + this.Td;
                    if (q.length) {
                        var r = this.Zk(this.zoom, l),
                            s;
                        for (l = q.length - 1; 0 <= l; l -= 1) {
                            m = q[l];
                            s = m.ma;
                            var t = f;
                            if (!m.Bl || this.es && m.Jb !== h) m.Bl = d;
                            m.Jb = this.Jb;
                            this.jf && !m.Xj ? (t = Math.max(0, Math.abs(s.z - this.zoom) - 1), t = Math.min(f, (d - m.Bl) / (1 / Math.pow(1.32, t) * this.ez)), J.f.Xc && (t = f), 1 !== t && (c = !0)) : m.Xj = !1;
                            if (0 !== t && m.ya) {
                                if (m.ya.parentNode !== this.ka || m.zoom !== this.zoom || m.Ij !== f) {
                                    var u = (new J.C(s.x, s.y)).add(this.bn).Mb(r).Ba(this.U.tb(this.N)),
                                        u = u.round(),
                                        v = Math.ceil(r);
                                    this.xp(m.ya, u.x, u.y, v, v, t, s.z);
                                    m.zoom = this.zoom
                                }
                                if (m.ya.parentNode !== this.ka) {
                                    if (J.f.Xc && "overlayer" === this.I.get("type")) try {
                                        m.ya.style.visibility = "hidden",
                                            J.e.iepngFix(m.ya)
                                    } catch(x) {}
                                    this.ka.appendChild(m.ya)
                                } else J.f.Xc && "overlayer" === this.I.get("type") && (m.ya.style.visibility = "hidden");
                                g.push(m)
                            }
                            m.Ij = t
                        }
                    }
                }
                this.Mf = g;
                c && this.set("display", 0);
                this.tc(a, b)
            }
        }
    },
    tc: function(a, b) {
        var c = Math.pow(2, a.sa.zoom - this.bd);
        a.la && !b.la && (c *= 2);
        this.transform = {
            translate: a.sa.Oa.Ba(this.U).tb(this.N),
            scale: c,
            rotate: 0
        }
    }
});
window.CanvasRenderingContext2D && (window.CanvasRenderingContext2D.prototype.hp = function(a, b, c, d, f) {
    "undefined" === typeof f && (f = [10, 10]);
    var g = c - a,
        h = d - b,
        k = Math.floor(Math.sqrt(g * g + h * h));
    d = g / k;
    c = h / k;
    f.Yp = 0;
    for (var l = [], g = this.gp || 0, m = 0, n = 0, q = !1, r = h = 0; r < f.length; r += 1) f.Yp += f[r],
        l[r] = {
            lp: f[r] * d,
            mp: f[r] * c,
            Bd: h += f[r]
        },
        g -= f[r],
    0 > g && !q && (m = r, n = -g, q = !0);
    for (q = 0; n + q <= k;) n < f[m] ? (g = n * d, h = n * c) : (g = l[m].lp, h = l[m].mp),
        a += g,
        b += h,
        this.Ym ? this.moveTo(a, b) : this.lineTo(a, b),
        q += n,
        this.Ym = !this.Ym,
        n = f[(m + 1) % f.length],
        m = (m + 1) % f.length;
    k -= q;
    a += k * d;
    b += k * c;
    this.Ym ? this.moveTo(a, b) : this.lineTo(a, b);
    this.gp = (this.gp + q + k) % f.Yp
},
    window.CanvasRenderingContext2D.prototype.cD = function(a, b, c, d) {
        "undefined" === typeof d && (d = [10, 10]);
        var f = 2 * Math.PI * c,
            g = 0 >= d ? f: Math.round(f / (d[0] + d[1])),
            h = (d[0] + d[1]) / f * 2 * Math.PI;
        d = d[0] / f * 2 * Math.PI;
        for (f = 0; f < g; f += 1) this.beginPath(),
            this.arc(a, b, c, f * h, f * h + d),
            this.stroke()
    });